package com.study.algorithm.binarytree;

/**
 *230. 二叉搜索树中第 K 小的元素
 */
public class KthSmallest {

    private int count = 0;    // 计数器，记录当前访问的是第几个节点
    private int result = 0;   // 存储第k小的值

    public int kthSmallest(TreeNode root, int k) {
        inorderTraversal(root, k);
        return result;
    }

    private void inorderTraversal(TreeNode node, int k) {
        if (node == null) {
            return;
        }
        // 遍历左子树
        inorderTraversal(node.left, k);

        // 处理当前节点
        count++;
        if (count == k) {
            result = node.val;
            return;  // 提前终止遍历
        }

        // 遍历右子树
        inorderTraversal(node.right, k);
    }
}
